package com.heima.wemedia.auto;

import okhttp3.*;
import org.json.JSONObject;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

/**
 * 内容审核平台-文本
 * <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
 * <dependency>
 *     <groupId>com.squareup.okhttp3</groupId>
 *     <artifactId>okhttp</artifactArtId>
 *     <version>4.12.0</version>
 * </dependency>
 */

class BaiduArticleCensorClient {

    // 百度AI开放平台的API Key，用于获取访问令牌（Access Token）
    public static final String API_KEY = "BvtM8SjE8gCHUNGFpUPKe8Ct";

    // 百度AI开放平台的Secret Key，用于身份验证和生成访问令牌
    public static final String SECRET_KEY = "3PMMAazxujFmtAROUnMKwmQXrxZT1Lzf";

    // 创建OkHttpClient实例，并设置读取超时时间为300秒
    public static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder()
            .readTimeout(300, TimeUnit.SECONDS)
            .build();

    /**
     * 主方法，程序入口
     *
     * @param args 命令行参数
     * @throws IOException IO异常
     */
    public static void main(String[] args) throws IOException {
        // 定义请求体的媒体类型为application/x-www-form-urlencoded
        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");

        // 构建空的请求体
        RequestBody body = RequestBody.create(mediaType, "text=草拟吗");

        // 构建POST请求对象，目标URL为百度文本审核接口，并携带访问令牌
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined?access_token=" + getAccessToken())
                .method("POST", body)
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .addHeader("Accept", "application/json")
                .build();

        // 发送HTTP请求并获取响应
        Response response = HTTP_CLIENT.newCall(request).execute();

        // 打印响应结果
        String string = response.body().string();
        JSONObject jsonObject = new JSONObject(string);
        String conclusion = jsonObject.getString("conclusion");
        System.out.println(conclusion);

    }

    /**
     * 从用户的AK，SK生成鉴权签名（Access Token）
     *
     * @return 鉴权签名（Access Token）
     * @throws IOException IO异常
     */
    static String getAccessToken() throws IOException {
        // 定义请求体的媒体类型为application/x-www-form-urlencoded
        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");

        // 构建请求体，包含获取Access Token所需的参数
        RequestBody body = RequestBody.create(mediaType,
                "grant_type=client_credentials&client_id=" + API_KEY
                        + "&client_secret=" + SECRET_KEY);

        // 构建POST请求对象，目标URL为百度OAuth接口
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/oauth/2.0/token")
                .method("POST", body)
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .build();

        // 发送HTTP请求并获取响应
        Response response = HTTP_CLIENT.newCall(request).execute();

        // 解析JSON响应并返回Access Token
        return new JSONObject(response.body().string()).getString("access_token");
    }
}
